package com.openlogic.common.logic.node.factory;

import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.commons.lang3.StringUtils;

import com.openlogic.common.core.exception.ServiceException;
import com.openlogic.common.logic.node.parse.BaseParseHandler;

/**
* @ClassName: NodeParseFactory
* @Description: 简单工厂模式 创建节点解析处理器
* @author weiyongpeng
* @date 2024年7月14日 下午12:37:03
 */
public class NodeParseFactory {
	
	private static ConcurrentHashMap<String, BaseParseHandler> strategyMap = new ConcurrentHashMap<>();

    /**
    * 描述：根据name获取对应的handler实现
    * @Title: getInvokeStrategyMap
    * @param name
    * @return
    * @author weiyongpeng
    * @date  2024年7月20日 上午8:15:35
     */
    public static BaseParseHandler getInvokeStrategyMap(String name){
    	if (Objects.isNull(strategyMap.get(name))) {
			throw new ServiceException("未匹配到" + name + "对应的处理器，请检查");
		}
        return strategyMap.get(name);
    }

    /**
    * 描述：注册
    * @Title: register
    * @param name
    * @param handler
    * @author weiyongpeng
    * @date  2024年7月20日 上午8:15:48
     */
    public static void register(String name, BaseParseHandler handler){
        if(StringUtils.isEmpty(name)||null == handler){
            return;
        }
        strategyMap.put(name,handler);
    }
}
